當修改資料庫資料,違反資料表之間的關聯性,可能就會遇到 integrity constraint violation 問題。
常見的有這三種:
今天要分享的是 foreign key contraint,發生在刪除資料時,child table 發生了 initegrity constraint violation 問題,也就是其 referenced 的資料將要被刪除,但仍然被 child table referencing。
解決辦法即是在 child table 的 foreign key 加上 cascade on delete,當 parent table 刪資料時,child table 的資料也會被刪除。
範例: cascade on delete
CREATE TABLE orders (
order_id int NOT NULL AUTO_INCREMENT,
customer_id int NOT NULL,
order_date date,
PRIMARY KEY (order_id),
FOREIGN KEY (customer_id) REFERENCES customers(customer_id) ON DELETE CASCADE
);
CREATE TABLE order_items (
item_id int NOT NULL AUTO_INCREMENT,
order_id int NOT NULL,
item_name varchar(255),
quantity int,
PRIMARY KEY (item_id),
FOREIGN KEY (order_id) REFERENCES orders(order_id) ON DELETE CASCADE
);